package com.social.socialservice.idal;

import com.social.socialservice.model.FansListInfo;
import com.social.socialservice.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 推荐方法，数据接口
 */
@Mapper
@Component
public interface IRecommendUserDAL {
    /**
     * 查询所有用户数量（id）
     */
    @Select("select user_id from ex_user")
    public List<UserInfo> getALLUserIds();

    /**
     * 根据指定用户id查询好友数量
     */
    @Select("select fo_id from ex_fanslist where fo_id=#{user_id}")
    public List<FansListInfo> getFosByUserId(UserInfo userInfo);

    /**
     * 优化方法，只读取用户关注关系表，减少IO操作，剩下全部由程序在内存中执行
     * 由于只有ids集合，所以对内存占用有限，不用担心性能，建议使用map操作集合
     * @fans_fo_id 被关注id
     * @fo_id 关注id
     */
    @Select("select fans_fo_id,fo_id from ex_fanslist")
    public List<FansListInfo> getALLFoUsers();

    /**
     * 根据推荐ids集合，查询推荐的用户信息
     */
    @Select("select user_id,username,user_nickname,user_headimg,user_bgimg,user_fo,user_fans,user_info,auth_id from ex_user\n" +
            "where user_id in (${ids})")
    public List<UserInfo> recommendUserFoUserList(UserInfo userInfo);
}
